package com.banquetmanagementsystem.mapper;

import com.banquetmanagementsystem.pojo.entity.Dictionary;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author 86176
 */
@Mapper
public interface DictionaryMapper {
    /**
     * 新增数据字典
     *
     * @param name               名称
     * @param dictionaryDescribe 描述
     * @param sort               排序
     * @return 受影响的行数
     */
    @Insert("INSERT INTO dictionary(name,dictionary_describe,sort) VALUES(#{name},#{dictionaryDescribe},#{sort})")
    Integer insertDictionary(String name, String dictionaryDescribe, Integer sort);

    /**
     * 新增数据字典内容
     *
     * @param pId                数据字典id
     * @param name               数据字典内容名称
     * @param dictionaryDescribe 数据字典内容描述
     * @param sort               排序
     * @return 受影响的条数
     */
    @Insert("INSERT INTO dictionary(p_id,name,dictionary_describe,sort) VALUES (#{pId},#{name},#{dictionaryDescribe},#{sort})")
    Integer insertDictionaryContext(Integer pId, String name, String dictionaryDescribe, Integer sort);


    /**
     * 根据id删除数据字典，注意此操作会自动删除数据字典内容
     *
     * @param id 数据字典id
     * @return 受影响的条数
     */
    @Delete("DELETE FROM dictionary WHERE p_id =0 AND id=#{id} or p_id=#{id}")
    Integer deleteDictionaryById(Integer id);

    /**
     * 根据id删除数据字典内容
     *
     * @param id 数据字典id
     * @return 受影响的条数
     */
    @Delete("DELETE FROM dictionary WHERE id=#{id} AND p_id !=0")
    Integer deleteDictionaryContextById(Integer id);

    /**
     * 获取所有数据字典
     *
     * @return 所有数据字典
     */
    @Select("SELECT id, p_id, name, dictionary_describe, sort, user_id, create_date FROM dictionary WHERE p_id=0")
    List<Dictionary> getAllDictionary();

    /**
     * 根据id获取数据字典
     *
     * @param id 数据字典id
     * @return 数据字典
     */
    @Select("SELECT id, p_id, name, dictionary_describe, sort, user_id, create_date FROM dictionary WHERE id=#{id} AND p_id=0")
    Dictionary getDictionaryById(Integer id);

    /**
     * 根据pId获取所有数据字典内容
     *
     * @param pId 数据字典id
     * @return 所有数据字典内容
     */
    @Select("SELECT  id, p_id, name, dictionary_describe, sort, user_id, create_date FROM dictionary WHERE p_id=#{pId}")
    List<Dictionary> getAllDictionaryContextBypId(Integer pId);

    /**
     * 根据id获取数据字典内容
     *
     * @param id 数据字典内容id
     * @return 数据字典内容
     */
    @Select("SELECT  id, p_id, name, dictionary_describe, sort, user_id, create_date FROM dictionary WHERE id=#{id} AND p_id!=0")
    Dictionary getDictionaryContextById(Integer id);

    /**
     * 根据ID修改数据字典，不修改的参数为null
     *
     * @param id                 要修改数据字典的id
     * @param name               修改名称
     * @param dictionaryDescribe 修改描述
     * @param sort               修改排序
     * @return 受影响的条数
     */
    Integer updateDictionaryById(Integer id, String name, String dictionaryDescribe, Integer sort);

    /**
     * 根据ID修改数据字典内容，不修改的参数为null
     *
     * @param id                 要修改数据字典内容的id
     * @param name               修改名称
     * @param dictionaryDescribe 修改描述
     * @param sort               修改排序
     * @return 受影响的条数
     */
    Integer updateDictionaryContextById(Integer id, String name, String dictionaryDescribe, Integer sort);

}
